Digital Signal Processor (DSP) applications are becoming increasingly more demanding in their requirements of DSP cores. For example, the increased data rates specified for the fourth generation (4G) of mobile telecommunication systems require significantly higher DSP performance. One operation that is often required to be performed is that of finding the index of an element comprising, say, a maximum or minimum value, or modulus (absolute maximum) value, within a given systematic arrangement of values such as an array (as opposed to the maximum/minimum value itself). For clarity, an index comprises an identifier for a specific element within, say, an array, such as in the form of a relative location of the array element within the array. For example, the search for the index of a maximum value within an array is often used within communication systems for such algorithms as timing/frequency offset detection (whereby a received signal is correlated with a pilot sequence, and the index of the maximum correlation typically corresponds to the timing/frequency offset), as well as for finding one of many possible transmitted sequences using cross correlation e.g. a maximum likelihood (ML) decoder.
In order to perform such max/min value index finding operations using traditional DSP implementations, it is typically necessary for the application program code to comprise an ‘if’ statement that results in a ‘change of flow’ in the application program code. To improve the overall throughput of DSPs, a pipelined architecture is typically implemented in order to reduce the overall number of cycles per instruction, and thereby improve the throughput of the DSP. However, a change of flow, such as may result from the use of an ‘if’ statement, effectively voids any benefit provided by such a pipelined architecture for that part of the application program code, significantly reducing the efficiency of the DSP. In addition, the use of an ‘if’ statement to perform such max/min value index finding operations prevents more than one max/min value index finding operation being performed per cycle (due to the limitation of using a dedicated conditional flag within the DSP), irrespective of the ability of the processing parallelism within DSP architecture.
Since such max/min value index finding operations may be required to be performed on a regular basis within a mobile telecommunication receiver, such a reduction in the efficiency of the DSP for performing such operations can have a significant detrimental effect on the overall performance of the DSP.